package easyway.core.dao;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import easyway.core.utils.PaginationSupport;

/**
 * 基本DAO操作类
*
* @author zhangqihang
* @date Nor 23, 2009
*/

public interface BaseDAO {
	
	/**
	 * 插入实体
	 * 
	 * @param sqlId sqlmap中对应的id名称
	 * @param entity 需要插入的实体
	 */
	void insertEntity(String sqlId, Object entity);
	/**
	 * 插入实体返回id    zhangqihang
	 * 
	 * @param sqlId sqlmap中对应的id名称
	 * @param entity 需要插入的实体
	 * @return id 插入的实体的id
	 */
	int insertEntityResultId(String sqlId, Object entity);
	
	/**
	 * 更新实体
	 * 
	 * @param sqlId sqlmap中对应的id名称
	 * @param entity 需要更新的实体
	 * @return 影响记录的行数
	 */
	int updateEntity(String sqlId, Object entity);
	
	/**
	 * 删除实体
	 * 
	 * @param sqlId sqlmap中对应的id名称
	 * @param obj 需要删除的实体或条件
	 * @return 影响记录的行数
	 */
	int deleteEntity(String sqlId, Object obj);
	
	/**
	 * 查询对象，返回单条记录
	 * 
	 * @param sqlId sqlmap中对应的id名称
	 * @param obj 查询的条件
	 * @return 查询的单条记录
	 */
	Object queryEntity(String sqlId, Object obj);
	
	/**
	 * 查询对象，返回多条记录
	 * 
	 * @param sqlId sqlmap中对应的id名称
	 * @param obj 查询的条件
	 * @return 查询的多条记录
	 */
	@SuppressWarnings("unchecked")
	List queryList(String sqlId, Object obj);
	
	/**
	 * @author huangww
	 */
	@SuppressWarnings("unchecked")
	List queryList(String sqlId);
	
	/**
	 * 分页查询，返回PaginationSupport分页对象
	 * 
	 * @param sqlIdItem sqlmap中对应的id名称，数据项
	 * @param sqlTotalId sqlmap中对应的id名称，总记录数
	 * @param pa 查询的条件和分页需要的参数
	 * @return 分页对象
	 */
	PaginationSupport queryForListPage(String sqlIdItem, String sqlTotalId,
			Map<String, Serializable> map);
	/**
	 * 查询对象，返回sum   zhangqihang
	 * 
	 * @param sqlId sqlmap中对应的id名称
	 * @param obj 查询的条件
	 * @return sum
	 */
	@SuppressWarnings("unchecked")
	int queryForSum(String sqlId, Map map);
}
